package com.hzw.saas.api.user.bo;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzw.saas.api.product.dto.UserProductInfoDto;
import com.hzw.saas.common.config.bo.BaseBO;
import com.hzw.saas.common.util.constants.PatternConsts;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 客户权益信息
 * </p>
 *
 * @author zzl
 * @since 2021-04-03
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel("用户权益信息")
public class UserRightsBO extends BaseBO {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID", position = 1)
    private String userId;

    /**
     * 会员级别ID
     */
    @ApiModelProperty(value = "会员级别ID", position = 2)
    private String levelId;

    /**
     * 后台管理会员级别
     */
    @ApiModelProperty(value = "后台管理会员级别", position = 3)
    private String levelText;

    /**
     * 页面显示级别
     */
    @ApiModelProperty(value = "页面显示级别", position = 4)
    private String levelDisplayText;

    /**
     * AWS核时总数
     */
    @ApiModelProperty(value = "AWS核时总数", position = 5)
    private Double awsCoreTime;

    /**
     * AWS核时有效期
     */
    @ApiModelProperty(value = "AWS核时有效期,pattern="+ PatternConsts.NORM_DATE_PATTERN, position = 6)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date awsCoreTimeExpireTime;

    /**
     * HPC核时总数
     */
    @ApiModelProperty(value = "HPC核时总数", position = 7)
    private Double hpcCoreTime;

    /**
     * 已分配的HPC核时数
     */
    @ApiModelProperty(value = "已分配的HPC核时数", position = 7)
    private Double hpcCoreTimeAssigned;

    /**
     * HPC核时有效期
     */
    @ApiModelProperty(value = "HPC核时有效期,pattern="+ PatternConsts.NORM_DATE_PATTERN, position = 8)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date hpcCoreTimeExpireTime;

    /**
     * 云存储空间大小，单位T/G/M
     */
    @ApiModelProperty(value = "云存储空间大小，单位T/G/M", position = 9)
    private String cloudStorageSize;

    /**
     * 云存储空间有效期
     */
    @ApiModelProperty(value = "云存储空间有效期,pattern="+ PatternConsts.NORM_DATE_PATTERN, position = 10)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date cloudStorageExpireTime;

    /**
     * 单个用户可用docker数
     */
    @ApiModelProperty(value = "可用docker数", position = 11)
    private Integer dockerNumber;

    /**
     * docker自动回收时长,单位H/m
     */
    @ApiModelProperty(value = "docker自动回收时长,单位H/m", position = 12)
    private String dockerRecycleDuration;

    /**
     * 计算软件license
     */
    @ApiModelProperty(value = "计算软件license", position = 13)
    private String softwareLicense;

    /**
     * 可选软件数量（不包含必选数量）
     */
    @ApiModelProperty(value = "可选软件数量（不包含必选数量）", position = 14)
    private Integer softOptionalNum;

    /**
     * 用户权益下的计算软件license对应的产品信息
     */
    @ApiModelProperty(value = "用户权益下的计算软件license对应的产品信息", position = 15)
    private List<UserProductInfoDto> products;

}
